home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / fly8111-.000 / fly8111- / fly8 / vmodes.c < prev    next >
C/C++ Source or Header  |  1979-12-31  |  2KB  |  144 lines

  1. /* --------------------------------- vmodes.c ------------------------------- */
  2.  
  3. /* This is part of the flight simulator 'fly8'.
  4.  * Author: Eyal Lebedinsky (eyal@ise.canberra.edu.au).
  5. */
  6.  
  7. /* Read in the video modes table.
  8. */
  9.  
  10. #include "fly.h"
  11.  
  12.  
  13. LOCAL_FUNC int NEAR
  14. get_mode (char *line, DEVICE *dev)
  15. {
  16.     char    *p;
  17.     long    l;
  18.     int    errs;
  19.  
  20.     errs = 0;
  21.  
  22.     if (T(p = get_piarg (line, 0)))
  23.         dev->name = p;
  24.     else
  25.         ++errs;
  26.     if (get_niarg (line, 1, &l))
  27.         ++errs;
  28.     else
  29.         dev->mode = (int)l;
  30.     if (get_niarg (line, 2, &l))
  31.         ++errs;
  32.     else
  33.         dev->colors = (int)l;
  34.     if (get_niarg (line, 3, &l))
  35.         ++errs;
  36.     else
  37.         dev->minx = (int)l;
  38.     if (get_niarg (line, 4, &l))
  39.         ++errs;
  40.     else
  41.         dev->miny = (int)l;
  42.     if (get_niarg (line, 5, &l))
  43.         ++errs;
  44.     else
  45.         dev->sizex = (int)l;
  46.     if (get_niarg (line, 6, &l))
  47.         ++errs;
  48.     else
  49.         dev->sizey = (int)l;
  50.     if (get_niarg (line, 7, &l))
  51.         ++errs;
  52.     else
  53.         dev->npages = (int)l;
  54.     if (get_niarg (line, 8, &l))
  55.         ++errs;
  56.     else
  57.         dev->lengx = (int)l;
  58.     if (get_niarg (line, 9, &l))
  59.         ++errs;
  60.     else
  61.         dev->lengy = (int)l;
  62.     if (get_niarg (line, 10, &l))
  63.         ++errs;
  64.     else
  65.         {}    /* obsolete field */
  66.     if (get_niarg (line, 11, &l))
  67.         ++errs;
  68.     else
  69.         {}    /* obsolete field */
  70.     if (get_niarg (line, 12, &l))
  71.         dev->flags = 0;
  72.     else
  73.         dev->flags = (int)l;
  74.  
  75.     return (errs);
  76. }
  77.  
  78. extern int FAR
  79. vm_read (void)
  80. {
  81.     FILE    *vm;
  82.     DEVICE    *dev, *tail;
  83.     int    errs, i, l;
  84.  
  85.     if (!st.vmdname)
  86.         st.vmdname = STRdup ("fly");
  87.  
  88.     Sys->BuildFileName (st.filename, st.fdir, st.vmdname, VMD_EXT);
  89.     vm = fopen (st.filename, RTMODE);
  90.     if (!vm) {
  91.         LogPrintf ("vmd: could not open file %s\n", st.filename);
  92.         return (1);
  93.     }
  94.  
  95.     tail = 0;
  96.     dev = 0;
  97.     Gr->devices = 0;
  98.     errs = 0;
  99.  
  100.     for (i = 1; fgets (st.filename, sizeof (st.filename), vm); ++i) {
  101.         if (st.filename[0] == '\n' || st.filename[0] == '#')
  102.             continue;
  103.         if (!NEW (dev)) {
  104.             LogPrintf ("vmd: out of memory\n");
  105.             ++errs;
  106.             continue;
  107.         }
  108.         l = strlen(st.filename);
  109.         st.filename[l-1] = '\0';
  110.         if (get_mode (st.filename, dev)) {
  111.             LogPrintf ("vmd: bad line %d\n", i);
  112.             ++errs;
  113.             DEL0 (dev);
  114.             continue;
  115.         }
  116.         dev->next = 0;
  117.         if (tail)
  118.             tail->next = dev;
  119.         else
  120.             Gr->devices = dev;
  121.         tail = dev;
  122.         dev->pdevice = 0;
  123.     }
  124.     fclose (vm);
  125.  
  126.     return (errs);
  127. }
  128.  
  129. extern void FAR
  130. vm_free (void)
  131. {
  132.     DEVICE    *dev, *next;
  133.  
  134.     if (!Gr)
  135.         return;
  136.  
  137.     for (dev = Gr->devices; dev; dev = next) {
  138.         next = dev->next;
  139.         dev->name = STRfree (dev->name);
  140.         DEL (dev);
  141.     }
  142.     Gr->devices = 0;
  143. }
  144.